# -*- coding:utf-8 -*-
"""
@file: FileOperDemo1.py
@Description: 文件及文件夹操作 单个文件操作（创建、删除、重命名等使用os模块，多个文件或者文件夹的高级操作
，如复制、移动、解压缩等操作使用shutil模块）
@author: Yu Wenjie
@email : yuwenjie@cetc-cloud.com
@version: 
@date: 2017/10/12 16:43
"""
import sys
import os
import shutil
import math
import random
import basic_python.template
import basic_python.debugDemo

#学习参考：http://www.cnblogs.com/feeland/p/4463682.html

#定义文件路径
file_dir="E:\\PyProject\\python\\temp"   # 注意 \\ ；windows 下是这么表示的；Linux 和 Mac 是 /
file_name="test.txt"
file_abs=os.path.join(file_dir,file_name) # os.path.join(...) 表示路径链接

#判断文件路径
"""
print (1,os.path.isabs(file_dir))                       # 判断是否绝对路径
print (2,os.path.isabs(file_name))
print (3,os.path.isabs(file_abs))
print (4,os.path.exists(file_abs))                      # 判断是否真实存在
print (5,os.path.exists(os.path.join(file_dir,"xxx")))
print (6,os.path.isdir(file_dir))                       # 判断是否是个目录
print (7,os.path.isdir(file_abs))
print (8,os.path.isfile(file_dir))                      # 判断是否是个文件
print (9,os.path.isfile(file_abs))
"""
# (1, True)
# (2, False)
# (3, True)
# (4, True)
# (5, False)
# (6, True)
# (7, False)
# (8, False)
# (9, True)


#路径名、文件名分割
"""
print os.path.split(file_abs)  #('E:\\PyProject\\python\\temp', 'test.txt') 分隔目录和文件名/文件夹名
print os.path.splitdrive(file_dir)  #('E:', '\\PyProject\\python\\temp') 分隔盘符（windows）
print os.path.splitext(file_abs)  #('E:\\PyProject\\python\\temp\\test', '.txt'） 分隔文件名后缀
"""

# 工作目录及创建文件夹操作
"""
file_dir1="E:\\PyProject\\python\\temp1"
print (os.getcwd())  #获取当前工作目录  E:\PyProject\python
os.chdir(file_dir1)  #改变工作目录
print (os.getcwd()) #E:\PyProject\python\temp1
print os.listdir(file_dir) #['test.txt']  #列出当前工作目录的所有文件 ['demo1.txt', 'test.txt']
os.mkdir("test_mkdir4") #在当前工作目录下创建文件夹，不可存在相同文件夹，否则会出错
print (os.getcwd())
os.makedirs("test_mkdir3\\test1",0755) #创建目录
print "路径被创建"
os.chdir(".\\test_mkdir1")#. 表示本级目录； .. 表示上级目录
print os.getcwd()

#创建文件夹可能出错的原因：
1、path 已经存在（不管是文件还是文件夹）
2、驱动器不存在
3、磁盘已满
4、磁盘只读的或者没有写权限
"""

"""
current_dir="E:\\PyProject\\python\\temp1\\test_mkdir"
os.chdir(current_dir)
for i in range(2,5):
    dir_name="test"+str(i)
    os.mkdir(dir_name)
"""

#删除文件夹或文件
"""
os.rmdir("E:\\PyProject\\python\\temp1\\test_mkdir\\test2") #删除目录，必须为空文件夹
os.remove("E:\\PyProject\\python\\temp\\demo.txt") #删除文件夹

#删除文件夹及其其下所有文件
shutil.rmtree("E:\\PyProject\\python\\temp1") #删除temp1目录下的所有文件及文件夹
"""

#重命名文件夹/文件(重命名需要带扩展名)
# os.rename("E:\\PyProject\\python\\temp\\test.txt","E:\\PyProject\\python\\temp\\test1.txt")


#复制、移动文件夹或者文件（包括删除某一目录下的所有文件或者文件夹），需引用第三方模块 shutil模块
# shutil.copyfile("E:\\PyProject\\python\\temp\\test1.txt","E:\\PyProject\\python\\temp\\test2.txt")
#复制的内容要求文件的目录需存在，且复制的内容只包括内容，不包括元数据，如果文件存在，则将被覆盖

#复制文件夹，都只能是目录，且new必须不存在
# shutil.copytree("E:\\PyProject\\python\\temp1","E:\\PyProject\\python\\temp2") #复制文件夹（空）

#移动文件/文件夹至new文件夹中
# shutil.move("E:\\PyProject\\python\\temp","E:\\PyProject\\python\\temp1")

# 复制文件/文件夹，复制 old 为 new（new是文件，若不存在，即新建），复制 old 为至 new 文件夹（文件夹已存在）
# shutil.copy("E:\\PyProject\\python\\temp1\\temp\\test1.txt","E:\\PyProject\\python")
# shutil.rmtree("E:\\PyProject\\python\\temp1")
# shutil.rmtree("E:\\PyProject\\python\\temp1");

# x=("如果一个文本穿在一行放不下"
#               '可以使用圆括号实现隐士链接')
# print x
# print "请输入一个值："
# x=input()
# print x

#将序列转化为一个元组
# s="this"
# a=tuple(s)
# b=list(s)
# c=set(s) #无序
# print a
# print b
# print c

#死循环

# var = 1
# while var == 1:  # 该条件永远为true，循环将无限执行下去
#     num = raw_input("Enter a number  :")
#     print "You entered: ", num
#
# print "Good bye!"

#随机函数调用
# x=range(1,5)
# print  x
# print random.choice(x)

#格式化输出
# print "My name is %s and weight is %d kg!"%('Zara', 21)

#base64编解码
# str = "this is string example....wow!!!";
# str = str.encode('base64','strict');
#
# print "Encoded String: " + str;
# print "Decoded String: " + str.decode('base64','strict')


#处理时间和日期
# import datetime
# i = datetime.datetime.now()
# print ("当前的日期和时间是 %s" % i)
# print ("ISO格式的日期和时间是 %s" % i.isoformat() )
# print ("当前的年份是 %s" %i.year)
# print ("当前的月份是 %s" %i.month)
# print ("当前的日期是  %s" %i.day)
# print ("dd/mm/yyyy 格式是  %s/%s/%s" % (i.day, i.month, i.year) )
# print ("当前小时是 %s" %i.hour)
# print ("当前分钟是 %s" %i.minute)
# print ("当前秒是  %s" %i.second)

#函数 全局变量
# global total  #定义一个全局变量
# total =0
#
# def total(a,b):
#     total=a+b
#     return  total
#
# total=total(4,5)
# print total


#打印库路径
# print sys.path
"""
模块搜索路径
['E:\\PyProject\\python',
 'E:\\PyProject\\python',
 'C:\\Python27\\python27.zip',
 'C:\\Python27\\DLLs',
 'C:\\Python27\\lib',
 'C:\\Python27\\lib\\plat-win',
 'C:\\Python27\\lib\\lib-tk', 
 'C:\\Python27',
 'C:\\Python27\\lib\\site-packages']
 """


#dir函数

# content=dir(math)
# content=dir(debugDemo)
# print content
# 一个排好序的字符串列表，内容是一个模块里定义过的名字

"""
['__doc__', '__name__', '__package__', 
 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees',
 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot',
 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh',
 'sqrt', 'tan', 'tanh', 'trunc']
 
 特殊字符串变量__name__指向模块的名字，__file__指向该模块的导入文件名
"""


#打开一个文件
# fo = open("E:\\PyProject\\python\\resources\\demo", "a+")
# print "文件名: ", fo.name
# print "是否已关闭 : ", fo.closed
# print "访问模式 : ", fo.mode
# print "末尾是否强制加空格 : ", fo.softspace
# str=fo.read()
# print str
# str1=fo.readline() #读取一行
# print str1

# fo.write("测试写入demo\n")
# fo.close() #刷新缓冲区里任何还没写入的信息并关闭该文件，之后便不能再进行写入


#获取项目路径
# print sys.path[0] #不可行
# aList = os.getcwd().split('\\')
# path = aList[0]+'\\'+aList[1]
# print path

print sys.path[0]




